Adaptive Bit Rate (ABR) streaming is a technique used in streaming multimedia content over computer networks. Adaptive streaming technologies are primarily based on Hypertext Transfer Protocol (HTTP) and designed to work efficiently over large distributed HTTP networks, such as the Internet. Thus, in the discussion below, the terms “streamed” or “delivered” may be used interchangeably to refer to a multimedia content delivered through adaptive streaming, through ABR HTTP downloads, or through any other suitable network-based content delivery method.
In ABR streaming, a user's bandwidth and processing capacity are detected in real time, and the quality of video stream is adjusted accordingly. The source audio-visual content is encoded at multiple bitrates, and then each of the different bitrate streams is segmented into small multi-second (e.g., 2 to 10 seconds) parts. A manifest file is provided to the streaming client. The manifest file makes the client aware of the available streams at different bitrates, and segments of the streams. The player client can thus switch between streaming the different encodings depending on available network resources. For example, when the network throughput has deteriorated, the client may find that the download speed for a currently-downloaded segment is lower than the bitrate specified for that segment in the manifest file. In that event, the client may request that the next segment be at that lower bitrate. Similarly, if the client finds that the download speed of the currently-downloaded segment is greater than the manifest file-specified bitrate of the segment downloaded, then the client may request that next segments be at that higher bitrate.
Some examples of ABR streaming solutions include the MPEG-DASH standard (where “MPEG” refers to Moving Picture Experts Group and “DASH” refers to Dynamic Adaptive Streaming over HTTP), the HTTP Live Streaming (HLS) solution offered by Apple, Inc. for iPhones and iPads, and the Smooth Streaming solution offered by Microsoft, Inc.
It is noted here that the terms like “audio-visual content,” “audio-visual segment,” “video content,” “video segment,” and other terms of similar import are used interchangeably herein to primarily refer to data content having audio components, video components, or both.
In adaptive streaming, multiple versions of a video/audio-visual content are offered at different bitrates or quality levels (e.g., from 100 Kbps to 2 Mbps). Thus, video is transported not as one big file, but as separate, distinct chunks (e.g., by “cutting” up the video in small files), and user-agents are allowed to seamlessly switch between quality levels specified in a manifest file (e.g., based upon changing device or network conditions), simply by downloading the next chunk from a different bitrate level.
Thus, in ABR streaming, videos (or audio-visual data) are served as separate, small chunks, and the accompanying manifest file provides metadata needed for the client's ABR player. The manifest file may be an Extensible Markup Language (XML) file. The media server that provides the ABR streaming may automatically adapt to any changes in each user's network and playback conditions. A user agent (in the client's ABR player) may parse the manifest file to appropriately switch between different stream levels (or bitrates). The ABR mode of content delivery is useful in many applications such as, for example, long downloads of video content (where ABR streaming may save bandwidth if the user is not currently watching the video), live video feeds (where ABR streaming may maintain the stability of the content delivery), delivery to mobile devices (where lots of buffering may be needed due to changing network conditions).
Modern cellular radio networks provide for sending and receiving data—such as, for example, audio-visual data. As mentioned above, adaptive streaming technologies allow mobile devices in a cellular network to adjust or adapt to changes in bandwidth by switching between higher and lower quality video segments indicated within a manifest file.